/*!
    \copyright  Copyright (c) 2024 Qualcomm Technologies International, Ltd.
                All Rights Reserved.
                Qualcomm Technologies International, Ltd. Confidential and Proprietary.
    \file
    \addtogroup le_bap
    \brief      Private file for Audio contexts handling for PACS utilities
    @{
*/

#ifndef PACS_AUDIO_CONTEXTS_PRIVATE_H_
#define PACS_AUDIO_CONTEXTS_PRIVATE_H_

#include <bdaddr.h>
#include <bt_types.h>
#include "pacs_audio_contexts.h"

/*! Maximum PACS instances */
#define PACS_UTILITIES_MAX_INSTANCES       2

/*! \brief PACS utilities instance data */
typedef struct
{
    /*! The gatt connection id*/
    unsigned                cid;

    /*! Sink and Source available audio context for this instance */
    audio_contexts_config_t available_audio_contexts;
} pacs_audio_contexts_instance_t;

/*! \brief PACS utilities task data. */
typedef struct
{
    /*! Audio context management control */
    bool audio_context_management_disable;

    /*! pacs utilities context information */
    pacs_audio_contexts_instance_t    pacs_instances[PACS_UTILITIES_MAX_INSTANCES];
} pacs_audio_contexts_data_t;

/*! PACS utilities Task Data */
extern pacs_audio_contexts_data_t pacsAudioContexts_data;

/*! Returns the PACS utilities Task Data */
#define pacsAudioContexts_GetData()        (&pacsAudioContexts_data)

/*! Returns if the audio context management control is disabled */
#define pacsAudioContexts_IsAudioContextManagementDisabled()        (pacsAudioContexts_GetData()->audio_context_management_disable)

/*! \brief Initialises the supported and available audio context characteristics in the PACS profile */
void PacsAudioContexts_Initialise(void);

#endif /* PACS_AUDIO_CONTEXTS_PRIVATE_H_ */
